package com.senlingspace.payment.lakala.bean.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 拉卡拉退款响应
 *
 * @author lebronjames
 * @date 2024/07/24
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class LakalaRefundResponse extends LakalaCommonResponse {

    @JsonProperty("resp_data")
    private RespData respData;

    @Data
    public static class RespData implements Serializable {

        /**
         * 商户号
         * <p>
         * 拉卡拉分配的银联商户号（请求接口中商户号）
         */
        @JsonProperty("merchant_no")
        private String merchantNo;

        /**
         * 商户请求流水号
         * <p>
         * 请求中的商户请求流水号
         */
        @JsonProperty("out_trade_no")
        private String outTradeNo;

        /**
         * 拉卡拉退款单号
         * <p>
         * 拉卡拉交易流水号
         */
        @JsonProperty("trade_no")
        private String tradeNo;

        /**
         * 拉卡拉对账单流水号
         * <p>
         * 拉卡拉对账单流水号
         */
        @JsonProperty("log_no")
        private String logNo;

        /**
         * 账户端交易订单号
         * <p>
         * 账户端交易流水号
         */
        @JsonProperty("acc_trade_no")
        private String accTradeNo;

        /**
         * 钱包类型
         *
         * @see com.senlingspace.payment.enums.LakalaAccountTypeEnum
         */
        @JsonProperty("account_type")
        private String accountType;

        /**
         * 交易金额	单位：分
         */
        @JsonProperty("total_amount")
        private String totalAmount;

        /**
         * 申请退款金额	单位：分
         */
        @JsonProperty("refund_amount")
        private String refundAmount;

        /**
         * 商户实际退还金额	 单位：分
         */
        @JsonProperty("payer_amount")
        private String payerAmount;

        @JsonProperty("buyer_refund_amount")
        private String buyerRefundAmount;

        /**
         * 退款时间
         * <p>
         * 实际退款时间。yyyyMMddHHmmss
         */
        @JsonProperty("trade_time")
        private String tradeTime;

        /**
         * 原拉卡拉订单号
         * <p>
         * 如果请求中携带，则返回
         */
        @JsonProperty("origin_trade_no")
        private String originTradeNo;

        /**
         * 原商户请求流水号
         * <p>
         * 如果请求中携带，则返回
         */
        @JsonProperty("origin_out_trade_no")
        private String originOutTradeNo;

        /**
         * 单品营销 附加数据
         * <p>
         * 参与单品营销优惠时返回
         */
        @JsonProperty("up_iss_addn_data")
        private String upIssAddnData;

        /**
         * 银联优惠信息、出资方信息
         * <p>
         * 参与单品营销优惠时返回
         */
        @JsonProperty("up_coupon_info")
        private String upCouponInfo;

        /**
         * 出资方信息
         * <p>
         * 数字货币中行返回示例说明：[{“fundchannel”:”BOC”,”amount”:”18”}]
         */
        @JsonProperty("trade_info")
        private String tradeInfo;
    }

}
